home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / New Superkillers.adf / FEA.Doc / FEA.Doc
Text File  |  1992-02-15  |  50KB  |  1,000 lines

  1.  
  2.                          FindEmAll V5.1
  3.  
  4.               Copyright © 1991-1992 Koen Peetermans
  5.                        All rights reserved
  6.  
  7.                   Release date January 20, 1992
  8.  
  9.                    FREEWARE/VOLUNTARY SHAREWARE
  10.  
  11.                           User Manual
  12.    
  13. TABLE OF CONTENTS
  14. -----------------
  15. A) DISCLAIMER
  16. B) PREFACE
  17. C) HOW TO GET A NEW VERSION
  18. D) ERIK LØVENDHAL'S ANTI-VIRUS WORK
  19. E) SYSTEM REQUIRMENTS
  20. F) WHY DID I WRITE THIS PROGRAM ???
  21. G) WHAT DOES THIS PROGRAM DO ??
  22. H) PACKAGE LIST
  23. I) QUICK START/EXPERIMENTING
  24. J) THE DISPLAY USED IN THE FINDEMALL PROGRAMS
  25.     1) Special "User-friendly" ANALYSE display in CLI
  26.     2) Example Display of a CLEAN computer with kickstart 1.2/1.3
  27. K) TECHNICAL STUFF
  28.     1) ColdCpt,CoolCpt,WarmCpt
  29.     2) KickMem
  30.     3) KickTag
  31.     4) Debug
  32.     5) Execint
  33.     6) SftList
  34.     7) ErrVec
  35.     8) HardInt
  36.     9) TrapVec
  37.        10) TaskVec
  38.        11) DosBase
  39.        12) KBReset
  40.        13) INTERRUPT SERVERS
  41.                -What are interrupt servers ?
  42.                -Examples
  43.        14) LIBRARIES/DEVICES/RESOURCES
  44.                -What are libraries/devices/resources ?
  45.         -Examples                   
  46.         -THE INTERNAL DOS LIBRARY
  47.        15) TASKS
  48.                -Normal Display
  49.                -Example : diskdoctors virus
  50.                -Harddisk problems
  51.                -Tips & Tricks
  52.        16) RESIDENTS
  53.                -What are resident programs ?
  54.                -Multiple viruses example
  55.        17) Message Ports
  56.  
  57. L) THE FINDEMALLVECTORS PROGRAM
  58. M) MORE TECHNICAL STUFF
  59.     1) The Printname routine.
  60.     2) The Cold Reset routine.
  61. L) "SHORT" FINDEMALL HISTORY
  62. M) CLI CHECKING VERSUS BOOTBLOCKCHECKING / CLI MEMCHECK INSTALLATION
  63. N) FUTURE UPGRADE PLANS + HELP NEEDED.
  64. O) THE AUTHOR - ME !
  65. P) THANKS
  66. Q) QUESTIONS ??
  67. R) BUGS ??
  68. S) SOURCE CODE
  69.  
  70.                
  71. DISCLAIMER
  72.  
  73.   FindEmAll has been tested thoroughly and is not able to damage
  74. your system in any way. However, the author is not responsible
  75. for any loss of data caused by bad use of the program. See 
  76. especially in the section that explains the use of the installer.
  77.  
  78. PREFACE
  79.  
  80.   This program is freeware, this means that you can copy it
  81. freely as long as you don't ask any more money for it than a
  82. nominal fee for copying.  If you want to distribute this program
  83. you should keep this document with it.  This program cannot be
  84. used for commercial purposes without written permission from the
  85. author. I hereby give explicit permission to Erik Løvendahl Sørensen
  86. and Fred Fish to include this program in their series.
  87.  
  88. HOW TO GET A NEW VERSION
  89.  
  90.   New versions are available from me directly, just send enough
  91. money for stamps,disk,... Although this program is freeware, more
  92. money than needed won't be refused, the money will be used in the
  93. battle against Viruses and Virus-authors. If you send me more than
  94. $15, you can also get the source of the previous version and you can
  95. get the next 2 versions directly from me (Fast !).
  96.  
  97.   Or you could write to Erik Løvendahl Sørensen (see below), he 
  98. will always get new versions from me directly, and hopefully
  99. he'll place it on his splendid "New SuperKillers" disks.
  100.  
  101.   If you have suggestions or remarks about this program, or if
  102. you find any bugs, please contact me. I like to have mail about this program
  103. and other Virus subjects. New Viruses would also be appreciated.
  104.  
  105. Write to the following address:
  106.  
  107.         Koen Peetermans
  108.         Vrijheersstraat 8
  109.         B-3891 Gingelom
  110.         Belgium (Europe)
  111.     
  112.  
  113. Erik Løvendhal's Anti-virus work
  114. --------------------------------
  115.  
  116.   Our motto: "Safe Hex..."
  117.  
  118.   I want to mention the work of Erik Løvendhal Sørensen from Denmark.
  119. He has founded a group of Amiga Enthusiast, all fighting against viruses.
  120.  
  121.   This group has over 250 international members now, among them
  122. some of the programmers of wellknown anti-virus programs like
  123. Steve Tibbet and Jonathan Potter.  Among the activities of this
  124. group are:
  125.  
  126. - Spreading information to anti-virus programmers as fast as
  127.   possible.
  128. - Trying to get names and proof against virus programmers and
  129.   giving the information to the justice departement of his/her
  130.   country to press charges. Remember, there is a reward of 
  131.   1000$ (Wow !) for the person that helps convicting a Virus
  132.   programmer.
  133. - Writing articles in popular magazines to inform new Amiga
  134.   users about viruses and how to protect themselves.
  135.  
  136.   All this is volunteer work. If you want some more information
  137. about this organization or you want to sponsor his work, contact
  138. Erik at the following address:
  139.  
  140.         Erik Løvendahl Sørensen
  141.         Snaphanevej 10
  142.         4720 Præstø
  143.         Denmark - Europe
  144.  
  145.         Phone: 00 45 55 99 25 12
  146.         Fidonet 2:23424/43
  147.  
  148.   Persons in Belgium can contact me directly, I'm also responsible for the
  149.   Regional Virus Centre in Belgium (Dutch language).
  150.   
  151. SYSTEM REQUIREMENTS
  152.  
  153.   FindEmAll should run on ALL amiga's, who have their kickstart logically
  154. at $f80000 or $fc0000. People with kickstart e.g. at $2000000 or so can get
  155. an adjusted version from me if they send me a description of their kickstart
  156. address. Future versions of FindEmAll will probably be able to bypass this
  157. problem by using a special installer. (comments are welcome !)
  158.  
  159.   It has been tested with KickStart 1.2,1.3 and 2.0 on A500/2000/3000
  160. Amiga models (Not on an Amiga 1000,but these won't cause a problem I guess.)
  161.  
  162.   It has a NTSC/PAL detection for automatic sizing of the display.
  163.  
  164.   Should you have any trouble running FindEmAll on your machine,
  165. please write to me with the full specifications of your machine,
  166. that is KickStart version, model, expansion boards etc...
  167. Use a good sysinfo program to determine your setup, if needed.
  168. A printout of the output of the "FindEmAllVectors" program (see further)
  169. would also help me solving your problem.
  170.  
  171. WHY DID I WRITE THIS PROGRAM ??
  172.  
  173.    A few months back I noticed that a new virus, the Saddam Virus,
  174. had infiltrated about 10 disks of me, even though I already knew quite
  175. a lot about viruses. At the moment I had no viruskiller for this 
  176. virus so I had quite a few problems deleting it. At that moment I said
  177. that I should have a program that should be able to immediatly detect ALL 
  178. new viruses, no matter how devious their tricks or "INVISIBLE" modes would
  179. be. The FindEmAll programs work a bit like the Ram-check option of
  180. the new BOOTX versions, and at the moment it does also some other things.
  181.  
  182.    The main difference is that I managed to make my program so short that
  183. I was able to place it in a bootblock (1Kb !), what is very difficult if
  184. you see the abilities of this program. Since it is a bootblock you are able
  185. to detect future viruses very fast in memory, and a lot of disks which
  186. don't use things like loaders can be installed with this bootblock.
  187.  
  188.    Don't under-estimate the work that has gone into these programs. I've
  189. been working on it the last 5 months and it has changed a LOT since the
  190. first version (See the History). A lot of research was needed in order
  191. to understand all the things that are and COULD be used by viruses.
  192.  
  193. WHAT DOES THIS PROGRAM DO ????
  194.  
  195.    This program checks a LOT of things in memory, some are very important,
  196. where some are less important and some are maybe not even needed, but you
  197. can never have enough information when dealing with viruses.
  198.  
  199.    Here is a short summary of the things it does (Detailed information
  200. can be found further in this manual) :
  201.  
  202.    - It checks + shows ALL the main vectors used by viruses (cold,Cool,...)
  203.    - It checks + shows some "important" values in Execbase
  204.    - It checks ALL sorts of interrupts, from Hardware interrupts, to
  205.      Execbase Interrupts (handlers AND SERVERS !), the serverlist is
  206.      even displayed on-screen !!!
  207.    - It shows + COMPLETELY checks ALL libraries and Devices, and ALL
  208.      the Resources that can be checked.
  209.    - It shows ALL names of reset-proof resident modules (Very useful !)
  210.    - It shows all the tasks running.
  211.    - The CLI programs also check the Internal Doslibrary and 2 important
  212.      vectors in DosBase
  213.    - It can wipe out ANY virus from MEMORY !!!.
  214.    - .......
  215.  
  216.     As you can or can't see, this program is the MOST powerful
  217.     Virus-DETECTOR available for the Amiga at the moment, certainly
  218.     when compared with other BOOTBLOCK checkers, I've never seen
  219.     one even coming close !! (STOP bragging, Koen !!). Most other
  220.     bootblock checkers only check about 3 values in memory, my
  221.     programs check even more than 500 values in memory !!!!!.
  222.  
  223. PACKAGE:
  224.    The package should contain (Names can be changed a BIT,if needed):
  225.       - This doc file "FindEmAll.doc"
  226.       - The Bootblock installer "FindEmAllInstaller"
  227.       - The CLI program "FindEmAllCLI" (V5.1)
  228.       - A Program called "FindEmAllvectors "(V1.6) (runs only from CLI)
  229.  
  230. QUICK START/EXPERIMENTING
  231.   Run the installer (from CLI or WorkBench), insert a Disk with a normal
  232. bootblock (so not with a loader !), and press the Install gadget. The Boot-
  233. block will now be installed on that disk. Press a key during the execution
  234. of that boot to display the current status (so,hold down shift or something
  235. else during bootup and the display will always pop up).
  236.   If there is something wierd, like a virus, is in memory, the display will
  237. come up autimatically, even withouth a key-press.
  238.   During the display, press Left-MouseButton to wipe everything out of
  239. memory, and the Right one to perform a normal boot and leave everything in
  240. memory. Sorry for so few mousebutton information on the display, I had no
  241. place left, I thought security was more important than user-friendlyness and 
  242. after a few times using the programs you'll work with it with your eyes
  243. closed !!!.
  244.  
  245. THE BOOTBLOCK INSTALLER
  246.    The installer is pretty straight-forward and user-friendly, if I may
  247. say it. just run it from CLI command or from workbench, and a window will
  248. pop up. Just select the appropriate "gadgets" to do a install with my
  249. bootblock, display the current bootblock on that disk, and select another
  250. drive. The only gadget that could confuse you is the 'TaskCheck' gadget.
  251. This is a switch that allows you to put task checking on and off. After
  252. you've selected that you'll still have to install the disk with the chosen
  253. bootblock. Why is this selection possible ??? Well see further in the doc's
  254. in the part on TASKS !!. For now, leave the taskcheck on, it's safer !!!
  255. Important: Be sure NOT to overwrite loaders or special intro's !!!
  256.  
  257.  
  258. THE DISPLAY USED IN THE FINDEMALL PROGRAM/BOOTBLOCK.
  259.  
  260.   After the Boot, the screen will become BLACK to enable you to notice the
  261. presence of the FindEmAll bootblock on that disk (Black is beautiful !)
  262.  
  263.   I use an Alert Window to display the status/.... The programming of
  264. such a window doesn't need a lot of programming so I had more space for
  265. detection routines. The Alert Window also assured me maximum Kickstart
  266. compatibility.
  267.  
  268. SPECIAL "USER-FRIENDLY" ANALYSE DISPLAY IN CLI
  269.  
  270.   The "OLD" FindEmALL versions were not very userfriendly, so I did an
  271. effort to make at least the CLI checker a bit more userfriendly. When there
  272. is something wierd in memory, a special alert window will pop up, saying
  273. that there is a suspicious program found in memory, and that this COULD
  274. be a virus. If nothing is found in memory, this window will NEVER pop up !
  275. In the Middle of the screen you see an ANALYSE window that quickly shows
  276. the most frequently performed actions of some viruses, and if they are
  277. done at the moment. If there are some Yes-es in this display, you should
  278. be EXTREMELY cautious !!. If you want more information (see further), you
  279. can press the left mouse button. I am planning to keep this ANALYSE window
  280. updated so that with ANY resident VIRUS, there is at least one YES in the
  281. analyse window. IF there is no YES in the display, normally there is NO
  282. OLD virus in memory, but beware for NEW viruses, but these are normally
  283. found and displayed in a more technical way in the "Technical display".
  284.  
  285. Here's a short explanation of the ANALYSED functions :
  286. - Reset proof program found in memory : There is a program in memory that
  287.                     can survive a RESET !!!
  288. - Drive I/O intercepted :         Bootblock/... read/writes intercepted
  289.                         by a program (VERY LIKELY a VIRUS !!).
  290. - Hard/Software interrupts changed :    Used a lot by viruses, but sometimes
  291.                         also by "badly" written utilities.  
  292. - Reset Proof memory allocated :    The least important function of this
  293.                     ANALYSE display, this is sometimes
  294.                     used by viruses, or a RAMDISK                        
  295. - DOSBase changed (traveling Jack) :    99 % sure that this is a VIRUS !!!
  296. - DosLib LOAD offset intercepted :    Could be a LINK-virus, or maybe also
  297.                     explode.library,LVD,pp.library
  298. - DosLib WRITE offset intercepted :    Could be a LINK-virus, or also
  299.                     patchpp,....
  300.                     
  301. EXAMPLE DISPLAY OF A CLEAN COMPUTER ON A KICKSTART 1.2/1.3 AMIGA
  302.  
  303. ************************************************************************
  304. *  LEFT=KILL/RESET        K.P. FindEmAll V5.1                          *
  305. *                                                                      *
  306. * ColdCpt OK   -ciaa.resource           OK  -potgo.resource        OK  *
  307. * CoolCpt OK   -??????                  OK  -keymap.resource       OK  *
  308. * WarmCpt OK   -gameport.device         OK  -ciaa.resource         OK  *
  309. * KickMem OK   -timer.device            OK  -ciab.resource         OK  *
  310. * KickTag OK   -ciab.resource           OK  -disk.resource         OK  *
  311. *{Debug   OK} {-Internal DOS library    OK} -misc.resource         OK  *
  312. * ExecInt OK   -exec.library            OK                             *
  313. *{SftList OK}  -expansion.library       OK  -keyboard.device       OK  *
  314. *{ErrVec  OK}  -graphics.library        OK  -gameport.device       OK  *
  315. * HardInt OK   -layers.library          OK  -timer.device          OK  *
  316. *{TrapVec OK}  -intuition.library       OK  -audio.device          OK  *
  317. *{TaskVec OK}  -mathffp.library         OK  -input.device          OK  *
  318. *{DosBase OK} {.............}               -console.device        OK  *
  319. *{KBReset OK}  -exec.library            OK  -trackdisk.device      OK  *
  320. *                                                                      *
  321. *              -input.device            OK                             *
  322. *              -trackdisk.device        OK                             *
  323. *                                                                      *
  324. *                                                                      *
  325. *                                                                      *
  326. *                                                                      *
  327. *                                                                      *
  328. *                                                                      *
  329. *                                                                      *
  330. * Resident: OK                                                         *
  331. ************************************************************************
  332.  
  333.    Note that the field places of the left column are different in BOOT,
  334.    and there are also some fields not displayed in boot.
  335.  
  336.    In CLI: 'K.P. FindEmAll v5.1',DOSBase+dos.library+internal DOS library
  337.    + some extra libraries/ports displayed ( see {}) + KBReset checked
  338.    + servers displayed below the devices !!!
  339.  
  340. TECHNICAL STUFF
  341.    Hmmm..... for a non-programmer or a non-virus specialist there should
  342. be at least a few problems understanding all this, that's why I'll try
  343. to explain all of them ....... I won't get TOO deep into some parts,since
  344. I would give would-be virus programmers too many tips and that's absolutely
  345. not what I want to do.
  346.  
  347.    It's rather technical, but READ it, it's quite important if you want
  348. to understand and use this bootblock to the limit. I kept the information
  349. as simple as I could possibly write it !!!
  350.    
  351.    I have divided the displayed vectors/... into three classes :
  352. - Class A : Very important, very often used by viruses. These Vectors
  353.             HAVE to be used to create reset-proof software.
  354. - Class B : important, often/frequent used by viruses for hooking
  355.             into memory,hiding in memory,...
  356. - Class C : Vectors that aren't really critical or normally couldn't
  357.             be used by a Virus.
  358.   
  359.  
  360.    ColdCpt,CoolCpt,WarmCpt (Class A)
  361.    -----------------------
  362. - These are vectors that are very often used by viruses since they enable
  363. a program to be reset-proof. The three vectors' full names are
  364. ColdCapture,CoolCapture and WarmCapture. They are found in the Execbase
  365. structure (The 'Main' system structure). These values are checked for
  366. being zero, if they're NOT than there is almost certain a reset-resident
  367. program (A Virus ?) in memory. The ColdCapture and the CoolCapture vectors
  368. are much more important than the WarmCpt vectors, since that vector is
  369. apparantly not possible to use for creating reset-resident programs with
  370. the current kickstarts. 
  371.   These vectors are considerd Very important Vectors, if there is anything
  372. wrong with these the chances are great that there is a virus in memory (or
  373. another reset-proof program.) => Class 'A' Vectors
  374.   When a Vector is not zero, the "OK" is changed into a "BAD!"
  375.  
  376.    Kickmem (Class B)
  377.    -------
  378. - This is a vector that allows programmers to keep a certain part of memory
  379. reserved AFTER a reset, so that part of memory can be "protected" to be
  380. overwritten after a reset. When this Vector isn't zero, this vector will
  381. be displayed 'BAD!'. This vector is not as important as the previous vectors,
  382. but is sometimes used by some viruses. So, CAUTION when this vectors is 
  383. 'BAD!'. If ONLY this vector is BAD!, there is little chance that there is
  384. a reset-proof PROGRAM in memory, since it is not possible to START some
  385. sort of routine or program by using this vector, maybe it could be some sort
  386. of reset-proof ramdisk that keeps its memory allocated after a reset.
  387.  
  388.    KickTag (Class AA)
  389.    -------
  390. - Now this IS a very important one !!!. This one is used to be able to even
  391. create MULTIPLE reset-resident programs (See the Resident explanation).
  392. Because of the way FindEmAll searches for residents I thought it would be safer
  393. to ALSO display/check this vector seperatly, since this is one of the most
  394. important vectors.
  395.  
  396.    Debug (Class CC)
  397.    -----
  398. - This appears to be an entrypoint for the Amiga Debugger, I haven't been
  399. able to call it until now, so I guess it's not important, but it's checked
  400. anyway, to see if this one points to ROM.
  401.  
  402.    ExecInt (Class BA)
  403.    -------
  404. - This field stands for the status of 16 Interrupt vectors (Interrupts are
  405. RUN when some special thing happens, like the refresh of a screen,I/O).
  406. When one of the 16 Vectors checked doesn't point to ROM or isn't Zero,
  407. there could be a program (likely a VIRUS) in memory that has deviated it
  408. for it's own use, like for calling a routine that keeps filling Class A
  409. Vectors with the viruses' entrypoints. This is wat e.g. the ByteBandit
  410. Virus does. These 16 IntVects are found in Execbase and are used by the
  411. operating system. They define the entrypoint of a single routine (a 
  412. so-called 'interrupt-handler'), or the entrypoint of a routine that handles
  413. an 'interrupt-server-list' - see further for explanation on servers
  414.  
  415.    SftList (Class C)
  416.    -------
  417. - This also stands for some sort of interrupt, but one that isn't controlled
  418. by hardware, like the other interrupts, but by software ONLY. I just check
  419. if there is something in the 5 softlists, and if there IS something in the
  420. list it's "BAD!". These Vectors are NOT important, but were just included
  421. because I had a few bytes to spare.
  422.  
  423.    ErrVec (Class CB)
  424.    ------
  425. - These are some values that define the entrypoints of the processor when
  426. for example there is an address-error, like when you have a GURU or 
  427. something else. Sometimes changed by a Virus, don't ask me why but 
  428. it seems rather unimportant.
  429.  
  430.    HardInt (Class BA)
  431.    -------
  432. - This stands for 7 vectors, that are DIRECTLY accessed by the processor
  433. when a hardware interrupt occurs. Normally these point to a ROM-routine
  434. that executes a handler/server (see ExecInt), so if some devious virus
  435. changes this , it's 'BAD!'. These vectors can be used by a virus just
  436. like the ExecInts.
  437.  
  438.    TrapVec (Class C)
  439.    -------
  440. - This is comparable with the ErrVec Vectors, so not really important,
  441.   and I've not yet seen a Virus using it.
  442.  
  443.    TaskVec (Class C)
  444.    -------
  445. - 3 Vectors in Execbase that define the Entrypoints for taskExit(s),
  446.   exception routines,...... I've not been able to use them, so probably
  447.   a virus won't be able also.
  448.  
  449.    DOSBase (Class BA)
  450.    -------
  451. - These 2 vectors can and are only checked in CLI/Workbench because there
  452.   is no dos.library during boot. If one of these is changed, you can be
  453.   quite sure that there is some sort of (link)virus in memory. 
  454.   I've heard that the travelling Jack uses one of these two. 
  455.  
  456.    KBReset (Class ????? A ??? B ???)
  457.    -------
  458. - I don't think this one should be checked at the moment (with the current
  459.   kickstarts), but since VMK checks it I'll check it also. I'll have to say
  460.   that the routine I use is based heavily on the VMK routine, since I have
  461.   no documents that explain this sort of pointers. I also noticed that the
  462.   VMK program isn't able to check it on 68030 boards since some values in
  463.   the keyboard device are a bit changed then. ($21->$22,$24->$25) FindEmAll
  464.   also checks these values. I don't think that it is possible to create 
  465.   reset-proof programs with these vectors, but when it's possible the program
  466.   will find it.
  467.       
  468. Until now, I must say that these Vectors are not the real power of this
  469. program, since this was rather easy to make and doesn't take much routine-
  470. space/programming. The following things, however, were not THAT easy !!
  471.  
  472.    Interrupt Servers (Class BA)
  473.    -----------------
  474.  
  475. In the upper-mid part of the window you'll normally see this:
  476.  
  477.    -ciaa.resource    OK          Class B
  478.    -??????           OK          Class BA
  479.    -gameport.device  OK          Class BA
  480.    -timer.device     OK          Class BA
  481.    -ciab.resource    OK          Class B
  482.  
  483.   "Now what the hell is this ??" I hear the whole Amiga World asking......
  484.   Well remember when I told you about interrupt-servers ????. Well, that's
  485.   it !!!! These servers are used when a programmer needs to install an
  486.   interrupt 'by the book'. All interrupts are placed in a "list", and they
  487.   are one by one executed after each other when an interrupt occurs. Some
  488.   sort of interrupts are used so much at 'the same time' that these sort
  489.   of lists were 'invented'. Notice that there is more than one type of
  490.   server. You normally have the servers caused by a CIA-A interrupt
  491.   (ciaa.resource), caused by the Vertical Blank interrupt (started when
  492.   the electron beam returns to the top of the screen) (-??????,gameport.
  493.   device,timer.device) and a CIA-B interrupt (ciab.resource). 
  494.  
  495.   So, in this situation we have 3 different sort of servers displayed
  496.   (and they are okay !). The names you see appear to be the names of
  497.   the 'routines' that USE the server. Don't worry about that -??????
  498.   name, that NAME is ALWAYS bad, but that ROUTINE IS also executed so it's
  499.   also checked for the right jumpaddress. Notice that you don't see if a
  500.   server is a CIA or a VBlank server, that's not really important.
  501.  
  502.   Don't worry if there is a 'other' server displayed like '_SCSI_' (A3000),
  503.   as long as it's 'OK' there can be nothing wrong !!!. Also, with a LOT of
  504.   harddisks you have will probably also a few BAD servers, it's impossible
  505.   for me to know the difference between these and a virus-server. So you
  506.   should know your 'usual' BAD servers so you can see a DIFFERENCE when there
  507.   is something else in memory. If you look at the example display, you see
  508.   the STANDARD servers, if one of these is changed, you can be quite sure
  509.   that that change is NOT done by a harddisk !!. If you put the taskchecks
  510.   off (with the installer), the servers will be still SHOWN, but the warning
  511.   window WON'T pop up if there are ONLY tasks or SERVERS checked. 
  512.  
  513.   The servers weren't use by viruses in the 'old days', I think the Saddam
  514.   Virus was one of the first to do it.... quite Devious !!!!!!!! That one
  515.   changes the one with the BAD name, but my bootblock will say :
  516.  
  517.    -ciaa.resource    OK
  518.    -??????           BAD!       
  519.    -gameport.device  OK
  520.    -timer.device     OK
  521.    -ciab.resource    OK
  522.  
  523.   Gotcha !!!.... another virus bites the dust !!!!!! (Well, the Saddam
  524.   Virus changes SO much that is was found anyway, but you never know,
  525.   future viruses will try to hide in memory, and now they have an important
  526.   place less to hide. ('There ain't much bytes safe for a Virus when there
  527.   is a FindEmAll bootblock on your disks !!')
  528.  
  529.   A special feature of this bootblock is that it is able to distinguish
  530.   between a server and a handler, so if someone can change a handler into
  531.   a server (this is normally not possible, but since I've been able to do
  532.   it,....) this program will automatically detect if it's a server and it
  533.   will display and check that 'Undocumented Server'. Another Virus Bites
  534.   the dust !!! (And it ain't over yet !!)
  535.   
  536.   Please note that some programs like Xoper,ARTM will add new servers to
  537.   the system. Usually these servers have a good name like 'Xop I/O counter'
  538.   , but some programs like 'blanker' don't use good names,so beware !!
  539.   Viruses don't normally set a good name, but I guess they could do that in
  540.   the future, so watch out !!!.
  541.  
  542.    Libraries/Devices/Resources (Class BA / BA / B)
  543.    ---------------------------  
  544.    This works a bit like the RamCheck option of the new BootX versions,
  545.    only that my one is a bit less documentated but therefore small enough
  546.    to fit in the boot.
  547.  
  548.    On the screen during the FindEmAll Boot you can see the names of ALL
  549.    the libraries/devices/resources that are present in memory during 
  550.    the Boot (There is NO dos.library during the boot !). Now what are
  551.    Libraries/Devices/Resources ???? Well, to make a long story short,
  552.    each Lib/Dev/Res is a collection of routines that are put together
  553.    in a special structure in order to make it easier for programmers to
  554.    make programs and to insure future compatibility when e.g. a new
  555.    kickstart is published. A specific routine from one library is run
  556.    by calling a certain negative offset of that library. 
  557.    Now, my bootblock doesn't only checks the offsets OFTEN used by viruses,
  558.    but checks ALL offsets of a library so that even a Virus that changes
  559.    ANY offset in ANY L/D/R will be found.
  560.    Because of the special list-following-routine of my program, NEW 
  561.    libraries like on the A3000 are checked also.
  562.    L/D/R that run COMPLETELY in RAM instead of ROM can't be checked but
  563.    normally also can't be used by a virus since they must be loaded from
  564.    disk. In this case there won't be an 'OK' after the L/D/R name.
  565.    The Bootblock displays the offsets that are BAD in hexadecimal values.
  566.  
  567.    Examples of bad libraries/devices:
  568.    
  569.    -exec.library
  570.          -$01C8:BAD!          * The DoIO() routine is changed (used
  571.                                 by a LOT of viruses !!!)
  572.    -trackdisk.device
  573.          -$001E:BAD!          * Can be compared with the DoIO() routine,
  574.                                 but this one only applies for disk-drives,
  575.                                 while the ExecLib-DOIO works for most
  576.                                 drives/HD's !!!
  577.  
  578.  
  579.    Here's a list of offsets used often by viruses:
  580.    - exec.library :                          -trackdisk.device : 
  581.       -$0060   : FindResident routine           -$0006 : Open Device
  582.       -$00D8   : Availmem routine               -$000C : Close Device
  583.       -$0114   : FindName routine               -$001E : BeginIO routine
  584.       -$0198   : OldOpenLibrary routine      -XXXXXXX.device   :
  585.       -$01C8   : DoIO routine                   Almost Every device has the
  586.    - intuition.library :                        same offsets !!! => same as
  587.       -$00CC   : OpenWindow                     trackdisk.device !!
  588.    
  589.    I advice you to experiment a bit with the bootblock and some resident
  590.    utilities like Pseudo-ops Viruskiller (don't USE it !!) to see how
  591.    changed L/D/R are chown. Try some viruses if you have any !! (But KILL
  592.    them AFTER testing !!!)   
  593.  
  594.     THE INTERNAL DOS LIBRARY
  595.     ------------------------
  596.    This library only can be checked in CLI/Workbench, since there is no
  597.    dos.library during boot. I've made a routine that should be able to
  598.    check ALL the vectors in the internal doslibrary. I've made this
  599.    routine 'intelligent', so if there is no internal doslibrary with
  600.    kickstart 2.0, it will find that out automatically. If there's something
  601.    bad in the internal doslibrary, the vectors that are printed are NOT the
  602.    offsets in the internal doslibrary, but the offset-numbers  are just the
  603.    same as the vectors in the normal dos.library. This makes life just a bit
  604.    easier for some guys I guess. (And also made my code SHORTER !!!)   
  605.    
  606.       Tasks (Class B)
  607.       -----
  608. - Since the Amiga is a multitasking system, some virus-creators thought it
  609. would be "usefull" to start a task in the background that keeps the Virus
  610. firmly hooked into memory. So I had to show all the Tasks that are running
  611. during the boot. YES, there IS multitasking running during the boot, there
  612. are normally about 3 tasks running (This can be more if you own a harddisk,..)
  613. With my standard Amiga these tasks are called:
  614.  
  615.       -exec.library     (The current running tasks, controlled by exec)
  616.  
  617.       -input.device     (So a task started or controlled by the input.device)
  618.       -trackdisk.device (Same here, used to control the disk drive)
  619.  
  620.    The tasks are displayed below the libraries. Now, when a virus like
  621. the diskdoc virus gets into memory, it will install a task named
  622. "clipboard.device", that keeps putting the virus back into memory when
  623. you try to kill it. FindEmAll V5.1 will find and show this task as a BAD
  624. one. This is what shown at that moment:
  625.  
  626.       -exec.library        OK
  627.       -clipboard.device    BAD!
  628.  
  629.       -input.device        OK
  630.       -trackdisk.device    OK
  631.  
  632.    So FindEmAll is able to find BAD tasks ???. I hear a lot of programmers
  633. wondering how I do this. Well, first I have to say that this only works
  634. during the boot, and the check-"routine" is not ideal by far. You will notice
  635. this when you have a harddisk, most of the time the harddisk task is 'BAD!'
  636. also. That is why there is an option with the installer (see previous) to put
  637. this routine off, when it's annoying you when you have a harddisk. I would
  638. advice to leave the task-check on, since it offers a slightly better
  639. protection. DON'T be to sure that everything is allright when all TASKS are
  640. 'OK', since it is possible to bypass the routine (I'm not telling HOW to do
  641. that, search it for yourself you Virus Creating LAMER !!!).
  642.    A tip on task-checking :
  643.       -If there are MORE tasks displayed than normally on your system,
  644.    you should be extremely CAREFULL. Things I've seen are 2 trackdisk tasks
  645.    during BOOT,..... So, if you have problems and you think it is a virus,
  646.    try pressing a key during the boot when normally no warning is chown 
  647.    by the bootblock.
  648.    If you see new tasks or so, BINGO !!!. So far all this is not needed,
  649.    but Viruses -unfortunately- get better and better by the time.
  650.  
  651.    For the experts : all RUNNING,READY and WAITING tasks are chown !!!
  652.    (NORMALLY there aren't any ready-tasks during boot, but the diskdoc
  653.     virus has another opinion about that !!).
  654.  
  655.    Another program I found that installed a task was the viruskiller
  656.    "Viruscontrol V1.3" (This time it was a WAITING task !). 
  657.  
  658.  
  659.    Residents (Class AA)
  660.    ---------
  661.    - At the bottom of the screen the "resident" programs are chown. These
  662. are generated by using the kicktag, explained previously. The Residents
  663. allow it to have MORE THAN ONE reset-proof program in memory at the same
  664. time !!!. Now this can be very dangerous, since viruses can intrude in
  665. memory even if there is a checker like Guardian also in memory, and Guardian
  666. won't notice the other Virus !!!!. So I made a routine that displays the names
  667. of ALL resident programs present in memory. When there is NO resident program
  668. in memory the display reads 'Resident:OK'.
  669.    When there is a resident program in memory the name is displayed,
  670. if possible (read the comment about the printname routine, further in the
  671. manual). I've been able to put about 5 resident programs in memory at the
  672. same time. These were : TurboPrint,Guardian,PowerUtility,The Lamer
  673. Exterminator Virus and a other virus with a bad resident name. So the display
  674. looked somewhat like this:
  675.  
  676. Resident:-printer.device             (Turboprint)
  677.          -PowerUtility !!!
  678.          -???????                    (Virus With BAD name)
  679.          -strap                      (Guardian)
  680.          -The Lamer Exterminator !!! (Guess what ....) 
  681.  
  682. (This is just an example, the actual places were different)
  683.  
  684. The resident program with the highest priority is chown at the lowest place,
  685. due to the text-build-up of my routine. The program with the highest priority
  686. is executed first during the reset-routine.
  687.  
  688.    Message Ports (Class CC)
  689.    -------------
  690.    - Very unimportant, I think I'm gonna remove this check !
  691.    The Ports are displayed below the devices (if there ARE ports).
  692.    Don't worry if you get ports with the -?????? name that just are ports
  693.    that aren't used anymore (although I'm really not sure about that).
  694.    In CLI,there usually ARE ports like 'IDCMP','-??????' !!!
  695.  
  696. THE FINDEMALLVECTORS PROGRAM
  697.    This is a program that can only be run from CLI (or with iconx). This
  698. program shows all the things checked by the other FindEmAll programs in
  699. hexadecimal values. This is normally used by people that know a bit more
  700. about viruses and things. I use this program to determine the address of
  701. a possible virus in memory, to do specific tests,.... There is a lot of
  702. room for improving this program (user-friendly ??), but you can work with
  703. it if you want. The output can be redirected so 'FindEmAllvectors > prt:'
  704. will print the output on printer. With this program it is
  705. possible to determine almost all activities of a virus very quickly !!
  706. (I hope this program will turn out to be very useful for other anti-virus
  707. programmers, and hope they'll use it and send me suggestions !!)
  708.  
  709.    This program is comparable with the VMK program, it only does many things
  710. more. Send me your tips on how I could improve this program !
  711.  
  712. PS: The VMK program has some bugs (e.g. with 'special' resources like the
  713.     keymap.resource), use the FindEmAllvectors program !!!
  714.  
  715.    From version 1.2, there is also a ASCII display of the memory.
  716.    The program figures out which part of memory to display,by way of sorting
  717.    and selecting bad pointers. Now, the program can be made to display the
  718.    memory in ASCII when a certain number of BAD vectors are close to each-
  719.    other in memory. The default number for this is 3, so a program has
  720.    to change at least 3 vectors in order to be displayed in ascii.
  721.    The number used by the program can be given as parameters in CLI,
  722.    for example:
  723.    'FindEmAllvectors'     => No ASCII displays.
  724.    'FindEmAllvectors -d5' => Only ASCII displays above 5 changed vectors.
  725.    'FindEmAllvectors -d1' => Always ASCII displays of changed vectors.
  726.    'FindEmAllvectors -d'  => Default => Value = 3
  727.    This can be quite confusing, so try fiddling with it a bit, I hope
  728.    you understand it. Please note that the parameter-parser of the
  729.    program is very primitive, it won't give error messages or help !!
  730.  
  731.  
  732. THE PRINTNAME ROUTINE :
  733.  
  734.    - When printing names from libraries/devices/resources/residents/tasks,
  735. I get these names out of RAM, and some virus-makers try to do some special
  736. tricks to give some things BAD names. When you see a -?????? displayed that
  737. means that the name begins with a zero (so it is an empty name), so I placed
  738. question marks instead of nothing. Now, a SMART virus programmer (That's not
  739. possible since all these "programmers" are not smart enough to get out of 
  740. their ....) could give the name all blanks ("   "), but I've outsmarted them,
  741. I just place the "-" character before each name, so NO name can stay
  742. undetected !!!!. This was also done for when an Extremely clever virus
  743. maker would program a resident virus with the 'OK' name. (The OK-virus ???
  744. Hahahaha !!! Don't give them ideas, Koen !!!! ) Normally that would
  745. cause the Resident display to read "Resident:OK", but now it is :
  746. "Resident:-OK'. Gotcha !!!. I guess you still need a sharp eye, but it's
  747. better than the old printname routine I guess....
  748.  
  749. THE COLD RESET ROUTINE :
  750.    Like mentioned before, by pressing the left mouse button during the warning
  751. display, you can kill ALL resident programs/viruses in memory. This routine
  752. will be similar like putting the computer off and on, so NOTHING can survive
  753. this sort of reset.
  754.    I've tried a lot of 'reset versions' to see which one was the most 
  755. compatible one and would work on each system. First I used an adjusted
  756. version of the 'official' reset routine published by commodore. Well, this
  757. one didn't seem to work at all on an A3000 or on some autoboot harddisks.
  758.    From version V4.9, there is a new reset routine , that should work
  759. much better and more compatible. Special thanks must go to Geert Coelmont for
  760. sending an official reset routine !!. There is also a new reset version in
  761. boot now, that should solve the previous problems with autoconfig boards.
  762.  
  763. SHORT FINDEMALL HISTORY
  764.  
  765.  
  766. -V1.0 : checked only ColdCpt,CoolCpt,WarmCpt and KickTag
  767. -V1.1 : added KickMem and KickChckSum test(the last one shouldn't be checked)
  768.  
  769. -V2.0 : First 'advanced' version.
  770.         - First library checker routine for exec.library and trackdisk.device
  771.         - Checked residents => only one resident displayed
  772.         - checked ColdCpt,CoolCpt,WarmCpt,KickMem,KickTag,KckCheckSum
  773.           and hardints.
  774.         - memory allocated, 80 cols (didn't work on kick 2.0), 'official'
  775.           reset-routine.
  776. -V2.1 : Included intuition.library and graphics.library check, and a few
  777.         much used ExecInts.
  778. -V2.1+: Better display
  779. -V2.2 : added timer.device and layers.library check, checked ALL execints
  780.  
  781. -V3.0 : First version of FindEmAll that went trough list to check ALL
  782.         libraries/devices/resources. Included TrapVec and ErrVec check.
  783. -V3.1 : RAM/ROM L/D/R detection, TaskVecs checked, multiple (5) residents
  784.          displayed, KickTag field removed (because of the checked residents)
  785. -V3.2 : test version
  786. -V3.3 : First version with task-check, ExecInt checked better, SoftList
  787.         checked, max. 7 residents displayed
  788. -V3.4 : test version
  789. -V3.5 : DebugEntry check added, checks included for use with 'special' 
  790.         32-bit RAM outside 16 MB area.
  791. -V3.5+: added Port-display
  792. -V3.6 : Better and new task-check.
  793. -V3.7 : First check of interrupt servers
  794. -V3.8 : New Checklibrary routine (safer)
  795.  
  796. -V4.0 : Much better interrupt server check ('BAD' ones also checked)
  797.         automatic server<->handler detection included.
  798. -V4.1 : safer server check (no more GURU's with BAD lists)
  799. -V4.2 : much safer library checker, display reorganised
  800. -V4.3 : shorter and fast library check-routine
  801.         memory used is NOW allocated properly
  802.         PAL/NTSC check
  803. -V4.4 : KickTag check reinserted (You never know .....)
  804.         Code tidied up a bit.
  805.         library check routine more watertight against 'smart' guys.
  806.         FIRST OFFICIAL RELEASE.
  807. -V4.5 : ONLY CLI/workbench programs improved, since the added things can
  808.     only be checked in CLI/workbench. Added DOSBase check,internal
  809.          dos.library check and KicKMemList(s) display. Fixed the Task-
  810.        check bug.
  811. -V4.6 : -Exec library test made safer (99% watertight).
  812.     The new bootblock does this test.
  813.     -CLI checkers even more safer (99.9% Watertight !!)
  814.     -FastFonts and Blitzfonts programs support added in vectors program,
  815.         and also LoadWB (AmigaWiz !) and explode library recognized.
  816.     -KickMemlist display 'bug' in FindEmAllvectors fixed.
  817.     -'smart' ASCII display of memory in vectors program.
  818.     -SoftList and Ports checks removed from bootblock (rather useless ?).
  819.     -rt_init field (jumpaddress of a resident-routine or data's) and
  820.      rt_Endskip field (end of structure) from residents displayed 
  821.      by vectors program.
  822. -V4.7 : -Hmmm, I (at last !) found that the ExecPatch isn't done yet during
  823.      boot, so I could remove this routine, and so I had space to 
  824.      re-include the SftList check. Because of this new library test
  825.      the bootblock has become just as watertight as the CLI version!!!!
  826.         -Security improved drastic by not using the NT_TYPE (node !) values.
  827.     -Exec.library test made mega-safe !!! (99.999% Waterproof !)
  828.     -Dos.library check also made extra safe.
  829.     -Much Safer RAM/ROM detection
  830.     -Running Task is now also displayed.
  831.     -Drive Motor is stopped during boot-display.
  832.     -Replaced OldOpenLibrary into OpenLibrary in CLI programs
  833.     -Placed Servers on another place in screen in CLI, because there
  834.          are more libraries and tasks in CLI !!!    
  835. -V4.7+: -Bootblock/Programs now also have Safer RAM/ROM detection
  836.     -Ports check deleted (again ???) from bootblock.
  837. -V4.8 : -Brand new and very good ROM/RAM L/D/R detection routine,
  838.          very safe. Because of this new and long routine, the softlist
  839.          check was deleted again in the bootblock (forever ???)
  840.     -Vectors program now also checks librarychecksums and
  841.      the Resident's matchword.
  842.     -No more fiddling possible with libraries' negative sizes.
  843.     -Libraries closed after use in CLI (no place for it in BOOT !)
  844. -V4.9 : -LMB "bug" fixed in CLI program
  845.     -Table added with the negative sizes of some very important
  846.      ROM libraries/devices/resources, making CLI-checks mega-safe.
  847.     -New COLD-reset routine in CLI programs.                
  848. -V5.0 : -I was out of 4.x versions, so what's new ????
  849.     -Many code changes to make the bootblock code even shorter and
  850.      more compatible + waterproof.
  851.     -Negative size of exec.library checked in boot also.
  852.     -Negative size of libraries NOT CHANGED anymore, just checked,
  853.      so no more BAD library checksums caused by the FindEmAll program.
  854.      (Many viruses, however, WILL corrupt library checksums !!!)
  855.     -New, very SHORT and compatible COLD-reset routine in boot.
  856.     -checks against odd addresses added (less GURU's with bad lists).
  857.     -no more self-modifying code in programs, so there cannot be
  858.      problems with 680X0 caches (although the previous versions modified
  859.      their code in a quite compatible way, no GURU's there !!!!)
  860.     -KeyboardReset is checked (Important ????) ONLY in CLI,since the
  861.      check routine takes too much space (almost 100 Bytes !!)
  862.     -Many ß-testing was done of this version on Kickstart 1.2,1.3,2.0
  863.      ,on Amiga 500,2000+HD+68030,Amiga 3000 in order to 'earn' the
  864.      5.0 version.
  865. -V5.1 : -The name of the programs were changed from 'Memcheck' to 'FindEmALL'
  866.      ,that should sound more logical (thanks to Erik for this tip).
  867.     -The CLI program is made much more user-friendly, and I added an
  868.      analyze display for activities done a lot by viruses.
  869.     -There is also a WARNING text in boot also, but unfortunately I had
  870.      to remove the more unimportant fields from the boot (but normally
  871.      these vectors won't be used by viruses). 
  872.      
  873.              
  874. CLI CHECKING VERSUS BOOTBLOCK CHECKING / CLI FINDEMALL INSTALLATION
  875.  
  876.    There are a few differences between virus-memory-checking in CLI/Workbench
  877. and checking during the boot :
  878.       - Viruses (LINK) that don't stay in memory during a reset (XENO ?),
  879. WON'T use 'Class A' Vectors to stay in memory. These viruses are quite
  880. difficult to find in memory since they usually stay resident by way of
  881. libraries. Viruses of this type won't be found in memory during boot
  882. since they ARE NOT in memory at that time. These viruses are very rare
  883. at the moment. The solution to this is to use a checker that starts from CLI
  884. and that can deal with that virus. The CLI version of my FindEmAll program 
  885. or the FindEmAllvectors program could be used for this.
  886.       - Some viruses use special techniques to hide from memory DURING the
  887. boot. AFTER the boot they re-install the Class A vectors in order to survive
  888. the following reset. So, when a virus succeeds to bypass detection from my
  889. boot (What is unlikely, but never impossible), I advice you to put the CLI
  890. version somewhere at the 1-3'th place in the s/startup-sequence. I do it this
  891. way: I place the CLI FindEmAll command in the first AND the third place, just
  892. to be on the safe side. REMEMBER, a reset proof virus can NOT be hided from
  893. detection after startup (=> in CLI), this is their main weakness !!!!!
  894.  
  895. By the way, if you run SetPatch before the FindEmAll CLI program is run, you
  896. can see that there are a LOT bad libraries. This is a inconvinience that
  897. hasn't been dealt with until now. So run the CLI program BEFORE the
  898. setpatch command. Also when you start up the WorkBench, you could notice
  899. that there is one vector changed in the intuition.library (-$0114). Don't
  900. worry about this. If you have doubts about some changed vectors, run the
  901. vectors program since it knows a few programs that change libraries,
  902. like FastFonts,.... More programs will probably be added !!
  903.  
  904.      - The bootblock is intended to find a virus in boot,even if it uses
  905. hiding techniques.
  906.  
  907.  
  908. FUTURE UPDATE PLANS + HELP NEEDED
  909.  
  910.       - If possible, even more checked !!
  911.       - An installer that automatically finds the kickstart start address.
  912.         (This could cause problems with ROM-modules at $f..... )
  913.       - Bigger and more flexible CLI FindEmAllvectors version
  914.         Setpatch,... recognition, if possible
  915.         (the recognition routine should be quite short but still VERY safe)
  916.       - The program "FindEmAllvectors" can be improved a lot.
  917.     Ability to break the program by 'Ctrl-C', but I don't know
  918.         how to do it .... Any hints ?? (In assembler !!!)
  919.       - The Internal dos.library is checked, but I'm not 100% sure that
  920.         it's absolutely accurate. Since that InternalDosLoadseg check of
  921.         the EVW1.31 program didn't work on my kickstart1.2 (Why not ???),
  922.         I haven't been able to check my routine properly. Also I am not
  923.         100% sure of the accurate work under kick 2.0. Help me please !!!
  924.         The routine is made quite 'intelligent',so I think there shouldn't
  925.         be any problems.
  926.       - Maybe a reset-proof checker if time allowes it.
  927.       - More library checks. Does anyone have a good description of the
  928.         COMPLETE (POSITIVE part) dos.library, xx.library ,xx.device,
  929.         xx.resource structures,... eventually also on kickstart 2.0 ???
  930.         Send it to me,please !!!
  931.       - ANY SUGGESTIONS ???? -> Write me !!!
  932.  
  933. THE AUTHOR - ME !
  934.  
  935.   Hmm.... I am a 20 year old Amiga freak, graduated as a programmer-
  936. analist since last year. I'm working as a systems manager/programmer
  937. since the 6th of January (It's a great job !!).
  938.  
  939.   I use an Amiga 500 with a KCS Power PC Board (Shame on me ??? - well,
  940. the reset-proof ramdisk is quite good .... The Emulator isn't used !!),
  941. together with a STAR LC24-200 (Help !! My printer's 1.2 ROM has a few bugs
  942. when printing graphics, he sometimes skips lines when he had to PRINT...
  943. anyone has a similar problem ????) and one 5 1/4 disk drive. For the moment
  944. it's quite poor but when I earn enough money I'll maybe get a 
  945. super-charged A2000 !, or a Tower-3000 maybe....I'll just wait and see.
  946.  
  947. THANKS
  948.  
  949.   I wish to thank the following people for their help and moral support:
  950.  
  951. - Geert "Cóóóóóól-G" Coelmont for his high-tech remarks and enthousiasm.
  952.   Write more of those great demos and mega-blasts, Geert !!!
  953. - The Emro store in "Hasselt" for free use of their A3000, with that nasty
  954.   32-bit memory ,that mega-68030 processor and kickstart 2(.01 ??)
  955. - Walter Schoenaers for his technical electronic bullshit and his
  956.   1001 questions and comments.
  957. - Elen Joachim for giving me some competition with his Medicine Viruskiller
  958.   and for always ripping off my ideas or routines !
  959. - Ronny Joris for his moral support, crazy mind and para-psychologic
  960.   headaches (and also his wonderful ice-creams ...) !!
  961. - Ronny Plevoets for his "expert" opinion on "rasters",copper-"lines" and
  962.   11 ms harddisks.  
  963. - Beatiful girls with curly hair that keep me dreaming and hoping !..
  964.   (although they don't need to have curly hair !!!) (I would like to
  965.   have some mail from computer crazy girls !! - 200 % reply !!!).
  966.  
  967. QUESTIONS....
  968.    
  969.    Like stated earlier, questions can be send directly to me and I'll try to
  970. find an answer for them. If there are some things confusing in the manual,
  971. let me know as the manual for this program is quite new. I'll change
  972. the doc file, if possible. Urgent questions can be answered directly, by mail.
  973. If you have Virus problems, send also the virus, if you can. If it is a new
  974. virus, I'll send it also further to Erik Løvendahl. Discretion is assured 
  975. about your name and address, unless you WANT it published !!
  976.  
  977. BUGS
  978.     There could be some bugs left !!
  979.     If you find bugs, contact me !!!
  980.  
  981. SOURCE CODE.
  982.  
  983.    Hmmm... Normally I don't give away source codes, but if you don't trust
  984. me, it would be possible that I sended the source to one or two well-known
  985. anti-virus programmers, so they could check it.
  986. The latest source isn't normally send to persons that I don't know, but you
  987. never know if you can convince me of your good meanings (probably not).
  988. The source of the previous versions, however, CAN be obtained !!
  989.    I'll have to say that the codes of the installer and the vectors program
  990. are not written with a lot of care for loops,.... since there is enough place
  991. for these programs, not every byte is important. The code of the
  992. bootblock/CLI checkers is written quite better and therefore much shorter.
  993.  
  994.  
  995. ------------------------ Good Virus hunting !! -----------------------------
  996.  
  997.  
  998.                Signed,
  999.                            Koen Peetermans alias 'The Exorcist'
  1000.